void BulkPropagatorJob::doStartUpload(SyncFileItemPtr item,
UploadFileInfo fileToUpload,
- QByteArray transmissionChecksumHeader)
+ QByteArray transmissionChecksumHeader,
+ QByteArray md5ChecksumHeader)
{
if (propagator()->_abortRequested) {
return;
const auto remotePath = propagator()->fullRemotePath(fileToUpload._file);
+ currentHeaders["X-File-MD5"] = md5ChecksumHeader;
currentHeaders[checkSumHeaderC] = transmissionChecksumHeader;
BulkUploadItem newUploadFile{propagator()->account(), item, fileToUpload,
computeChecksum->setChecksumType(checksumType);
connect(computeChecksum, &ComputeChecksum::done, this, [this, item, fileToUpload] (const QByteArray &contentChecksumType, const QByteArray &contentChecksum) {
- slotStartUpload(item, fileToUpload, contentChecksumType, contentChecksum);
+ slotComputeMd5Checksum(item, fileToUpload, contentChecksumType, contentChecksum);
+ });
+ connect(computeChecksum, &ComputeChecksum::done, computeChecksum, &QObject::deleteLater);
+
+ computeChecksum->start(fileToUpload._path);
+}
+
+void BulkPropagatorJob::slotComputeMd5Checksum(SyncFileItemPtr item,
+ UploadFileInfo fileToUpload,
+ const QByteArray &transmissionChecksumType,
+ const QByteArray &transmissionChecksum)
+{
+ // Compute the transmission checksum.
+ const auto computeChecksum = new ComputeChecksum(this);
+ const auto checksumType = QByteArray{"MD5"};
+ computeChecksum->setChecksumType(checksumType);
+
+ connect(computeChecksum, &ComputeChecksum::done, this, [this, item, fileToUpload, transmissionChecksumType, transmissionChecksum] (const QByteArray &contentChecksumType, const QByteArray &contentChecksum) {
+ Q_UNUSED(contentChecksumType)
+
+ slotStartUpload(item, fileToUpload, transmissionChecksumType, transmissionChecksum, contentChecksum);
});
connect(computeChecksum, &ComputeChecksum::done, computeChecksum, &QObject::deleteLater);
void BulkPropagatorJob::slotStartUpload(SyncFileItemPtr item,
UploadFileInfo fileToUpload,
const QByteArray &transmissionChecksumType,
- const QByteArray &transmissionChecksum)
+ const QByteArray &transmissionChecksum,
+ const QByteArray &md5Checksum)
{
const auto transmissionChecksumHeader = makeChecksumHeader(transmissionChecksumType, transmissionChecksum);
return;
}
- doStartUpload(item, fileToUpload, transmissionChecksum);
+ doStartUpload(item, fileToUpload, transmissionChecksum, md5Checksum);
}
void BulkPropagatorJob::slotOnErrorStartFolderUnlock(SyncFileItemPtr item,
void slotComputeTransmissionChecksum(OCC::SyncFileItemPtr item,
OCC::BulkPropagatorJob::UploadFileInfo fileToUpload);
+ void slotComputeMd5Checksum(SyncFileItemPtr item,
+ UploadFileInfo fileToUpload,
+ const QByteArray &transmissionChecksumType,
+ const QByteArray &transmissionChecksum);
+
// transmission checksum computed, prepare the upload
void slotStartUpload(OCC::SyncFileItemPtr item,
OCC::BulkPropagatorJob::UploadFileInfo fileToUpload,
const QByteArray &transmissionChecksumType,
- const QByteArray &transmissionChecksum);
+ const QByteArray &transmissionChecksum,
+ const QByteArray &md5Checksum);
// invoked on internal error to unlock a folder and failed
void slotOnErrorStartFolderUnlock(OCC::SyncFileItemPtr item,
private:
void doStartUpload(SyncFileItemPtr item,
UploadFileInfo fileToUpload,
- QByteArray transmissionChecksumHeader);
+ QByteArray transmissionChecksumHeader,
+ QByteArray md5ChecksumHeader);
void adjustLastJobTimeout(AbstractNetworkJob *job,
qint64 fileSize) const;